home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Tech Arsenal 1
/
Tech Arsenal (Arsenal Computer).ISO
/
tek-11
/
colors.zip
/
COLORS.PRG
< prev
next >
Wrap
Text File
|
1993-01-04
|
22KB
|
632 lines
* THIS PROGRAM REQUIRES PROFESSION CLIPPER LIBRARY VERSION 2 (PROCLIP2)
* A SHAREWARE PROGRAM.
* COMPILING:
* CLIPPER COLORS
* TLINK COLORS,,,CLIPPER+EXTEND+PROCLIP2
* (or your own linker)
*:*********************************************************************
*:
*: Program: COLORS.PRG
*:
*: Author: G.PREFONTAINE
*:
*: Description: An interactive color-setting routine. Written to learn
*: how to use PROCLIP2. Uses MEM files COLORS.MEM and
*: COLVARS.MEM. Stores selected color strings in COLORS.MEM
*: which may be restored and used by your program.
*: Screen objects dealt with are:
*: Main Display Screen
*: C_NORMCOL - Normal Display Colors
*: C_NORMMENU - Normal Menu Colors
*: Help Box
*: C_HELPCOL - Help Box Colors
*: Lookup/Scroll Box
*: C_SCROLCOL - Lookup Box Colors
*: Dialog Box
*: C_POPCOL - Dialog Box Colors
*: C_POPMENU - Dialog Box Menu Colors
*:
*: Use it if you care to.
*:
*:
*:*********************************************************************
* DEMO
* this is how it would be called from a program
colorset()
return
* of course the screen would need to be re-painted afterwards
**************************************************************************
FUNCTION COLORSET
SAVE SCREEN TO PRECOL
SET COLOR TO W/N
CLEAR
PRIVATE fgstart,bgstart,instart
declare mainmen[5] && main menu
mainmen[1]='Main Screen'
mainmen[3]='Scroll Box'
mainmen[4]='Help Box '
mainmen[2]='Dialog Box'
mainmen[5]='Quit '
declare sel1men[4] && display selector
sel1men[1]='Display '
sel1men[2]='User Input'
sel1men[3]='Other Fields'
sel1men[4]='Menu Hilite'
declare sel2men[2] && scroll selector
sel2men[1]='Display '
sel2men[2]='Menu Hilite'
declare sel3men[1] && help selector
sel3men[1]='Display '
declare sel4men[4] && DIALOG selector
sel4men[1]='Display '
sel4men[2]='User Input'
sel4men[3]='Other Fields'
sel4men[4]='Hilite'
declare fgcol[8] && foreground colors
fgcol[1]= "Black"
fgcol[2]= "Blue"
fgcol[3]= "Green"
fgcol[4]= "Cyan"
fgcol[5]= "Red"
fgcol[6]= "Magenta"
fgcol[7]= "Yellow"
fgcol[8]= "White"
declare fgcode[8] && fg codes
fgcode[1]= "N"
fgcode[2]= "B"
fgcode[3]= "G"
fgcode[4]= "BG"
fgcode[5]= "R"
fgcode[6]= "RB"
fgcode[7]= "GR"
fgcode[8]= "W"
declare bgcol[8] &&bg colors
bgcol[1]= "Black"
bgcol[2]= "Blue"
bgcol[3]= "Green"
bgcol[4]= "Cyan"
bgcol[5]= "Red"
bgcol[6]= "Magenta"
bgcol[7]= "Brown"
bgcol[8]= "White"
declare bgcode[8] && be codes
bgcode[1]= "N"
bgcode[2]= "B"
bgcode[3]= "G"
bgcode[4]= "BG"
bgcode[5]= "R"
bgcode[6]= "RB"
bgcode[7]= "GR"
bgcode[8]= "W"
declare inten[2] && intensities
inten[1]="Low"
inten[2]="High"
declare intcode[2] && intensity codes
intcode[1]=""
intcode[2]="+"
declare quitmen[3] && quit menu choices
quitmen[1]="Save colors"
quitmen[2]="Don't save"
quitmen[3]="Abort quit"
** initial colors - should be gotten from an .mem file
if file("COLVARS.mem")
restore from colvars.mem additive
else
STORE "W" TO cwdf && display fg
STORE "N" TO cwdb && display bg
store '' to cwdi && display intensity
*
STORE "N" TO cwif && input
STORE "W" TO cwib && input
store '' to cwii
*
STORE "+W" TO cwff && input fields
STORE "N" TO cwfb && input fields
store '' to cwfi
*
STORE "N" TO cwhf && hilite
STORE "W" TO cwhb && hilite
store '' to cwhi
*
STORE "N" TO chdf && help display
STORE "W" TO chdb && help display
store '' to chdi
*
STORE "W" TO cbdf && scroll display
STORE "N" TO cbdb && scroll display
store '' to cbdi
*
STORE "N" TO cbhf && scroll hilite
STORE "W" TO cbhb && scroll hilite
store '' to cbhi
*
STORE "W" TO cadf && dialog display fg
STORE "N" TO cadb && dialog display bg
store '' to cadi && dialog display intensity
*
STORE "N" TO caif && dialog input
STORE "W" TO caib && input
store '' to caii
*
STORE "+W" TO caff && input fields
STORE "N" TO cafb && input fields
store '' to cafi
*
STORE "N" TO cahf && hilite
STORE "W" TO cahb && hilite
store '' to cahi
*
endif
initsay() && say screen
mbcol() && color main
hbcol() && color help
sbcol() && color scroll
dbcol() && color dialog
null = ''
*** main program segment start
do while .t. && main do-while
SET COLOR TO +W/N,+GR/B
@16,4 clear to 22,17
screensel = achoice(16,04,22,17,mainmen,null,'menuudf')
@16,4 clear to 22,17
@16,4 SAY MAINMEN[SCREENSEL]
do while .t. && screen element selection
@16,19 CLEAR TO 20,34
do case
case screensel = 1 && main display
elemsel = achoice(16,19,20,34,sel1men,null,'menuudf')
case screensel = 2 && dialog display
elemsel = achoice(16,19,20,34,sel4men,null,'menuudf')
case screensel = 3 && scroll display
elemsel = achoice(16,19,20,34,sel2men,null,'menuudf')
case screensel = 4 && help display
elemsel = achoice(16,19,20,34,sel3men,null,'menuudf')
case screensel = 5
@16,04 clear to 19,17
qchoice = achoice(16,04,19,17,quitmen,null,'menuudf')
do case
case qchoice = 1
STORECOL()
RESTORE SCREEN FROM PRECOL
SET KEY 28 TO HELPGET
SET KEY -30 TO HELPEDIT
RETURN ''
case qchoice = 2
RESTORE SCREEN FROM PRECOL
SET KEY 28 TO HELPGET
SET KEY -30 TO HELPEDIT
RETURN ''
case qchoice = 3
@16,04 clear to 19,17
EXIT
endcase
endcase
@16,19 CLEAR TO 20,34
DO CASE
case screensel = 1 && main display
@16,19 SAY SEL1MEN[elemsel]
case screensel = 3 && scroll display
@16,19 SAY SEL2MEN[elemsel]
case screensel = 4 && help display
@16,19 SAY SEL3MEN[elemsel]
case screensel = 2 && dialog display
@16,19 SAY SEL4MEN[elemsel]
ENDCASE
LK = LASTKEY()
IF LK = 19
EXIT
ENDIF
SETTER = 1
NULL = ''
* @24,37 SAY "[USE "+chr(24)+chr(25)+chr(26)+chr(27)+" - ENTER WHEN DONE]"
stchoice()
do while .t.
DO CASE
CASE SETTER = 1
Bgchoice=achoice(16,37,23,50,Bgcol,null,"doset",bgstart)
CASE SETTER = 2
Fgchoice=achoice(16,54,23,67,Fgcol,null,"doset",fgstart)
CASE SETTER = 3
intchoice=achoice(16,68,17,74,inten,null,"doset",instart)
ENDCASE
RKEY = LASTKEY()
MAIN = .F.
DO CASE
CASE RKEY = 13 && <> ENTER
EXIT
case rkey = 4 .and. setter = 3
exit
case rkey = 19 .and. setter = 1
exit
CASE RKEY = 19 && LEFT ARROW
SETTER = IIF(SETTER=1,3,SETTER - 1)
OTHERWISE
SETTER = IIF(SETTER=3,1,SETTER + 1)
ENDCASE
enddo
enddo
enddo
**** main program segment end
*****************USER DEFINED FUNCTIONS*****************
function doset
param M_mode,M_elem
if m_mode =1 .or. m_mode = 2
return 2
endif
if M_mode =3
lk = lastkey()
if (lk > 64 .and. lk < 91) .or. (lk > 97 .and. lk < 123)
return 3
endif
return 1
endif
do case
case screensel = 1 && main
do case
case elemsel = 1 &&display
do case
case setter = 2 && foreg
cwdf= fgcode[m_elem]
case setter = 1 && backg
cwdb= bgcode[m_elem]
case setter = 3 && intense
cwdi =intcode[m_elem]
endcase
case elemsel = 2 &&input
do case
case setter = 2 && foreg
cwif= fgcode[m_elem]
case setter = 1 && backg
cwib= bgcode[m_elem]
case setter = 3 && intense
cwii =intcode[m_elem]
endcase
case elemsel = 3 &&field input
do case
case setter = 2 && foreg
cwff= fgcode[m_elem]
case setter = 1 && backg
cwfb= bgcode[m_elem]
case setter = 3 && intense
cwfi =intcode[m_elem]
endcase
case elemsel = 4 &&hilite
do case
case setter = 2 && foreg
cwhf= fgcode[m_elem]
case setter = 1 && backg
cwhb= bgcode[m_elem]
case setter = 3 && intense
cwhi =intcode[m_elem]
endcase
endcase
mbcol()
case screensel = 3 && scroll
do case
case elemsel = 1 &&display
do case
case setter = 2 && foreg
cbdf= fgcode[m_elem]
case setter = 1 && backg
cbdb= bgcode[m_elem]
case setter = 3 && intense
cbdi =intcode[m_elem]
endcase
case elemsel = 2 &&hilite
do case
case setter = 2 && foreg
cbhf= fgcode[m_elem]
case setter = 1 && backg
cbhb= bgcode[m_elem]
case setter = 3 && intense
cbhi =intcode[m_elem]
endcase
endcase
sbcol()
* color scroll win
case screensel = 4 && help
do case
case elemsel = 1 &&display
do case
case setter = 2 && foreg
chdf= fgcode[m_elem]
case setter = 1 && backg
chdb= bgcode[m_elem]
case setter = 3 && intense
chdi =intcode[m_elem]
endcase
endcase
hbcol()
case screensel = 2 && dialog
do case
case elemsel = 1 &&display
do case
case setter = 2 && foreg
cadf= fgcode[m_elem]
case setter = 1 && backg
cadb= bgcode[m_elem]
case setter = 3 && intense
cadi =intcode[m_elem]
endcase
case elemsel = 2 &&input
do case
case setter = 2 && foreg
caif= fgcode[m_elem]
case setter = 1 && backg
caib= bgcode[m_elem]
case setter = 3 && intense
caii =intcode[m_elem]
endcase
case elemsel = 3 &&field input
do case
case setter = 2 && foreg
caff= fgcode[m_elem]
case setter = 1 && backg
cafb= bgcode[m_elem]
case setter = 3 && intense
cafi =intcode[m_elem]
endcase
case elemsel = 4 &&hilite
do case
case setter = 2 && foreg
cahf= fgcode[m_elem]
case setter = 1 && backg
cahb= bgcode[m_elem]
case setter = 3 && intense
cahi =intcode[m_elem]
endcase
endcase
dbcol()
endcase
return 2
function mbcol && COLOR MAIN
newcolor(0,0,11,19,cwdi+cwdf+'/'+cwdb)
newcolor(0,39,11,39,cwdi+cwdf+'/'+cwdb)
newcolor(0,59,11,61,cwdi+cwdf+'/'+cwdb)
boxcolor(0,0,11,79,cwdi+cwdf+'/'+cwdb)
NEWCOLOR(1,3,1,7,cwhi+cwhf+'/'+cwhb)
newcolor (6,9,6,18,cwii+cwif+'/'+cwib)
newcolor (5,9,5,19,cwfi+cwff+'/'+cwfb)
return ''
function hbcol && COLOR HELP BOX
newcolor(1,62,10,78,chdi+chdf+'/'+chdb)
return ''
function sbcol && COLOR SCROLL BOX
NEWCOLOR(1,40,10,58,cbdi+cbdf+'/'+cbdb)
newcolor(6,42,6,57,cbhi+cbhf+'/'+cbhb)
return ''
function dbcol && dialog box
newcolor(1,20,10,38,cadi+cadf+'/'+cadb)
newcolor(7,23,7,34,caii+caif+'/'+caib)
newcolor(8,23,8,34,cafi+caff+'/'+cafb)
newcolor(9,23,9,34,cahi+cahf+'/'+cahb)
return ''
function initsay
@ 03,00 CLEAR TO 11,79
@ 03,00 TO 11,79
@ 00,02 SAY "[D.1.7.]"
@ 05,01 SAY "Number"
@ 06,01 SAY "Name"
@ 06,09 say "JONES,FRED"
@ 05,09 say "123-45-7890"
@ 00,00 TO 03,79
@ 00,09 SAY "Main Screen Sample"
@ 03,00 SAY "├"
@ 03,79 SAY "│"
@ 01,01 CLEAR TO 02,78
@ 01,03 SAY "FIRST"
@ 01,10 SAY "LAST "
@ 01,40 CLEAR TO 10,58
@ 01,40 TO 10,58
@ 01,43 SAY "SCROLL BOX"
@ 02,42 SAY "JONES,EDDIE"
@ 03,42 SAY "JONES,FRED"
@ 04,42 SAY "KRAMDEN,RALPH"
@ 05,42 SAY "MOSS,BOB"
@ 07,42 SAY "POPPIN,MARY"
@ 08,42 SAY "QUESEDA,JOSE"
@ 09,42 SAY "SMITH,JOHN"
@ 01,62 CLEAR TO 10,78
@ 01,62 TO 10,78
@ 01,65 SAY "HELP BOX"
@ 02,64 SAY "This is a"
@ 03,64 SAY "help window."
@ 05,64 SAY "Press a key"
@ 06,64 SAY "to return to"
@ 07,64 SAY "the program."
@ 06,42 SAY "NEWTON,ISAAC "
@ 12,00 TO 24,79
@1,20 clear to 10,38
@1,20 to 10,38
@1,23 say "DIALOG BOX"
@2,23 SAY "This is a "
@3,23 say "window used "
@4,23 say "for dialog with"
@5,23 say "the user. "
@7,23 say "USER INPUT "
@8,23 say "OTHER FIELDS "
@9,23 say "MENU HILITE "
selecsay()
function selecsay
set color to +W/N,+GR/B
@ 12,00,24,79 BOX "┌─┐│┘─└│ "
@ 12,20 SAY "COLOR SELECTION BOX"
@ 13,01 CLEAR TO 23,78
@ 14,04 SAY "SCREEN: ELEMENT: BACKGROUND FOREGROUND INTENSITY"
@ 16,54 SAY "Black"
@ 17,54 SAY "Blue"
@ 18,54 SAY "Green"
@ 19,54 SAY "Cyan"
@ 20,54 SAY "Red"
@ 21,54 SAY "Magenta"
@ 22,54 SAY "Brown"
@ 23,54 SAY "White"
@ 16,04 SAY "Main Screen "
@ 17,04 SAY "Scroll Box "
@ 16,37 SAY "Black "
@ 16,54 SAY "Black "
@ 16,68 SAY "Low "
@ 17,37 SAY "Blue "
@ 17,54 SAY "Blue "
@ 17,68 SAY "High "
@ 18,04 SAY "Help Box "
@ 19,04 SAY "Quit "
@ 18,37 SAY "Green "
@ 18,54 SAY "Green "
@ 19,37 SAY "Cyan "
@ 19,54 SAY "Cyan "
@ 20,37 SAY "Red "
@ 20,54 SAY "Red "
@ 21,37 SAY "Magenta "
@ 21,54 SAY "Magenta "
@ 22,37 SAY "Brown "
@ 22,54 SAY "Yellow "
@ 23,37 SAY "White "
@ 23,54 SAY "White "
function menuudf
param a_mode,a_elem
if a_mode < 3
return 2
else
lk = lastkey()
if (lk > 64 .and. lk < 91) .or. (lk > 97 .and. lk < 123)
KEYBOARD CHR(13)
return 3
endif
return 1
endif
FUNCTION STORECOL
CWD = CWDI+CWDF+'/'+CWDB
CWI = CWII+CWIF+'/'+CWIB
CWF = CWFI+CWFF+'/'+CWFB
CWH = CWHI+CWHF+'/'+CWHB
CHD = CHDI+CHDF+'/'+CHDB
CBD = CBDI+CBDF+'/'+CBDB
CBH = CBHI+CBHF+'/'+CBHB
CAD = CADI+CADF+'/'+CADB
CAI = CAII+CAIF+'/'+CAIB
CAF = CAFI+CAFF+'/'+CAFB
CAH = CAHI+CAHF+'/'+CAHB
* HERE IS THE FINAL OUTPUT
c_NORMCOL = "&CWD"+','+"&CWI"+',N,N,'+"&CWF"
c_NORMmenu= "&CWD"+','+"&CWh"+',N,N,'+"&CWF"
c_HELPCOL = "&CHD"+','+"&CHD"+',N,N,N'
c_SCROLCOL = "&CBD"+','+"&CBH"+',N,N,N'
c_POPCOL = "&CAD"+','+"&CAI"+',N,N,'+"&CAF"
c_POPMENU = "&CAD"+','+"&CAH"+',N,N,'+"&CAF"
save to colvars.mem all like c???
SAVE TO COLORS.MEM ALL LIKE C_*
RETURN ''
FUNCTION STCHOICE
DO CASE
CASE SCREENSEL = 1
DO CASE
CASE ELEMSEL = 1
bgstart = ascan(bgcode,"&cwdb")
fgstart = ascan(fgcode,"&cwdf")
instart = ascan(intcode,"&cwdi")
CASE ELEMSEL = 2
bgstart = ascan(bgcode,"&cwib")
fgstart = ascan(fgcode,"&cwif")
instart = ascan(intcode,"&cwii")
CASE ELEMSEL = 3
bgstart = ascan(bgcode,"&cwfb")
fgstart = ascan(fgcode,"&cwff")
instart = ascan(intcode,"&cwfi")
CASE ELEMSEL = 4
bgstart = ascan(bgcode,"&cwhb")
fgstart = ascan(fgcode,"&cwhf")
instart = ascan(intcode,"&cwhi")
endcase
CASE SCREENSEL = 2 && dialog
do case
CASE ELEMSEL = 1
bgstart = ascan(bgcode,"&cadb")
fgstart = ascan(fgcode,"&cadf")
instart = ascan(intcode,"&cadi")
CASE ELEMSEL = 2
bgstart = ascan(bgcode,"&caib")
fgstart = ascan(fgcode,"&caif")
instart = ascan(intcode,"&caii")
CASE ELEMSEL = 3
bgstart = ascan(bgcode,"&cafb")
fgstart = ascan(fgcode,"&caff")
instart = ascan(intcode,"&cafi")
CASE ELEMSEL = 4
bgstart = ascan(bgcode,"&cahb")
fgstart = ascan(fgcode,"&cahf")
instart = ascan(intcode,"&cahi")
endcase
CASE SCREENSEL = 3 && scroll
do case
CASE ELEMSEL = 1
bgstart = ascan(bgcode,"&cbdb")
fgstart = ascan(fgcode,"&cbdf")
instart = ascan(intcode,"&cbdi")
CASE ELEMSEL = 2
bgstart = ascan(bgcode,"&cbhb")
fgstart = ascan(fgcode,"&cbhf")
instart = ascan(intcode,"&cbhi")
endcase
CASE SCREENSEL = 4 && help
do case
CASE ELEMSEL = 1
bgstart = ascan(bgcode,"&chdb")
fgstart = ascan(fgcode,"&chdf")
instart = ascan(intcode,"&chdi")
endcase
ENDCASE
return ''